package com.jungle.task.executor;

import com.jungle.task.Task;
import com.jungle.task.parameter.CompensateTaskParameter;
import com.jungle.task.result.CompensateTaskResult;

import java.util.Objects;

/**
 * @author 李岩 at 2021/10/23.
 */
public class DefaultCompensateTaskExecutor implements CompensateTaskExecutor{
    /**
     * 执行任务
     *
     * @param task 任务
     * @return res
     */
    @Override
    public CompensateTaskResult execute(final Task<CompensateTaskParameter, CompensateTaskResult> task) {
        final CompensateTaskParameter parameter = task.getParameter();
        if (Objects.nonNull(parameter.getFailedExecutors()) && !parameter.getFailedExecutors().isEmpty()){
            parameter.getContext().publishTask(parameter.getSaveTask(),parameter.getFailedExecutors());
        }
        return new CompensateTaskResult(true);
    }
}
